#ifndef ENGINE_WIN32WINDOW_IMPLEMENTATION_H_
#define ENGINE_WIN32WINDOW_IMPLEMENTATION_H_

#include "WindowInterface.h"

/**
 * Janela especializada para a plataforma Win32.
 *
 * @see JanelaFactory
 */
class Win32Window : public WindowInterface
{
public:

	/**
	 * Construtor.
	 */
	Win32Window(const WindowSettings& settings );

	/**
	 * Destrutor: é importante que seja virtual, pois essa classe é abstrata
	 */
	virtual ~Win32Window(void);


	/**
	 * Inicia o laço de renderização e de tratamento de eventos dessa janela
	 */
	virtual void startRendering(void);

	/**
	 * Retorna true se, e apenas se a tecla recebida como argumento está pressionada.
	 */
	virtual bool isKeyDown( WindowInterface::KeyCode key ) = 0;

	/**
	 * Redimensiona a janela
	 * @param width  Nova largura da janela, em pixels
	 * @param height Nova altura da janela, em pixels
	 */
	virtual void resize( int width, int height);

	/**
	 * Troca os buffers, forçando o OpenGL a exibir o resultado do quadro.
	 */
	virtual void swapBuffers(void);

protected:


};


#endif /* ENGINE_JANELAPRINCIPAL_H_ */
